package br.com.moto.web;


import javax.annotation.PostConstruct;
import br.com.moto.ejb.FotoSessionBean;
import br.com.moto.ejb.PessoaSessionBean;
import br.com.moto.entity.Album;
import br.com.moto.entity.Foto;
import br.com.moto.entity.Pessoa;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext; 
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;

@ManagedBean(name = "fotoController")
@SessionScoped
public class FotoMBean {
    
    @EJB
    private FotoSessionBean fotoSessionBean;
    
    @EJB
    private PessoaSessionBean pessoaSessionBean;
    
    private Foto foto = new Foto();
    private Foto fotoSelecionado;
    private List fotos = new ArrayList();
    private int albumId;
    
    public FotoMBean() {
    }
 
    @PostConstruct
    public void onLoad() {
            albumId = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("albumId"));
            System.out.println("albumId=" +albumId);
            
            fotos = fotoSessionBean.getFotoByAlbumId(albumId);
     }    
    
    public List getFotoToUser() { 
        return fotoSessionBean.getFotoToUser(LoginUtils.getLoggedUser());
    }     
    
    public List getListaFotos() { 
        return fotoSessionBean.retrieve();  
    }     
    
   public void handleFileUpload(FileUploadEvent event) {  
       System.out.println("handleFileUpload");
       System.out.println("albumId=" +albumId);
                 
        try{        
            UploadedFile arq = event.getFile();  
            InputStream in = new BufferedInputStream(arq.getInputstream());  
            File file = new File("C://temp//teste//" + arq.getFileName());  

            FileOutputStream fout = new FileOutputStream(file);  

            while (in.available() != 0) {  
                fout.write(in.read());  
            }  
            fout.close();  
            System.out.println("Pic=" + event.getFile().getFileName());
            
            Album a = new Album();
            a.setId(albumId);
            foto.setIdAlbum(a);   
            foto.setCaminho("C://temp//teste//" + arq.getFileName());
            fotoSessionBean.create(foto);              
            
            FacesMessage msg = new FacesMessage("O Arquivo ", file.getName() + " salvo.");  
            FacesContext.getCurrentInstance().addMessage("msgUpdate", msg);         
        
        }  
        catch (Exception ex) {  
            ex.printStackTrace();  
        }          
    }      
    
    public void adicionarFoto() {
        System.out.println("##adicionarFoto");
         
        
        Pessoa p = pessoaSessionBean.getPessoaByEmail(LoginUtils.getLoggedUser());
        
        Album a = new Album();
        a.setId(albumId);
        foto.setIdAlbum(a);   
        fotoSessionBean.create(foto);   
        
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Novo foto adicionado com sucesso!"));
    }
    
    public void novoFoto() {
        System.out.println("##novoFoto");
        foto = new Foto();
    }     
    
  
    
    public void excluirFoto() {
            fotoSessionBean.delete(fotoSelecionado);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Excluído com sucesso!"));
    }    

    public Foto getFoto() {
        return foto;
    }

    public void setFoto(Foto foto) {
        this.foto = foto;
    }

    public Foto getFotoSelecionado() {
        return fotoSelecionado;
    }

    public void setFotoSelecionado(Foto fotoSelecionado) {
        this.fotoSelecionado = fotoSelecionado;
    }

    public List getFotos() {
        return fotos;
    }

    public void setFotos(List fotos) {
        this.fotos = fotos;
    } 
}